import axios from 'axios'
import { Dialog, Toast } from 'vant'
// 本地调试,上线前注释掉即可
let token = '/QYLgfVMMvoesuDj5DVW2mWzlyNe9C1gvsTm9YtQ678='
localStorage.setItem('uerInfoApp', token)
// import store from '../store' // 导入vant组件库
let loading
function startLoading () {
  loading = Toast.loading({
    message: '加载中...',
    forbidClick: true
  })
}
function endLoading () {
  loading.clear()
}
// 创建axios的对象
const instance = axios.create({
  baseURL: process.env.ENV_PATH, // 测试环境 生产环境
  // baseURL: '/api', //  开发环境
  timeout: 10000
})

// 请求拦截
// 所有的网络请求都会走这个方法,可以在请求添加自定义内容
instance.interceptors.request.use(
  function (config) {
    config.headers.token = localStorage.getItem('uerInfoApp')
    // config.headers.token = '/QYLgfVMMvoesuDj5DVW2mWzlyNe9C1gvsTm9YtQ678='
    // config.headers.info = 'laneol'
    startLoading()
    // console.log('请求路径为', process.env)
    return config
  },
  function (err) {
    console.log('失败')
    return Promise.request(err)
  }
)

// 响应拦截
// 此处可以根据服务器返回的状态码做相应的数据
instance.interceptors.response.use(
  function (response) {
    console.log('成功', response.status)
    endLoading()
    if (response.status === 200) {
      if (response.data.code === 0) {
        console.log('接口返回', response)
        return response
      } else {
        Dialog.confirm({
          title: '提示',
          message: response.data.message
        })
          .then(() => {
            // on confirm
          })
          .catch(() => {
            // on cancel
          })
        return false
      }
    }
  },
  function (err) {
    console.log('失败', err.request.status)
    switch (err.request.status) {
      case 444:
        Dialog.confirm({
          title: '提示',
          message: '未登录，请重新登录'
        })
          .then(() => {
            // on confirm
          })
          .catch(() => {
            // on cancel
          })
        console.log('12222222222222')
        break
      case 502:
        Dialog.confirm({
          title: '提示',
          message: '系统内部错误，请联系管理员维护'
        })
          .then(() => {
            // on confirm
          })
          .catch(() => {
            // on cancel
          })
        break
      default:
        Dialog.confirm({
          title: '提示',
          message: '系统未知错误'
        })
          .then(() => {
            // on confirm
          })
          .catch(() => {
            // on cancel
          })
        break
    }
    return Promise.request(err)
  }
)

// 封装get和post请求
export function get (url, params) {
  return instance.get(url, {params})
}

export function post (url, data) {
  return instance.post(url, data)
}

export default instance
